/**
 * 《S2018082805259-投资风险测评保全系统需求》
 * @add by jiangwy 20190531
 * 
 * 
 * @param tel: 13580501669
 * 
 * @returns
 */
(function(app){
	app.controller("invest_risk_evaluate",
			["$scope","$rootScope","myFactory",'$http','$stateParams','$state','$timeout','$ionicHistory',
	function($scope,$rootScope,myFactory,$http,$stateParams,$state,$timeout,$ionicHistory){
		//	会话信息
		var token=sessionStorage.getItem("token");

		/**
		 * 1、请求参数定义，用于转发至审核操作使用（起转接作用）
		 */
		$scope.itemId 	= $stateParams.itemId;		//	变更项目ID
		$scope.chdrnum01= $stateParams.chdrnum01; 	//	保单号
		$scope.chdrcoy 	= $stateParams.chdrcoy; 	//	保单公司号码
		$scope.item		= $stateParams.item;		//	变更项内容

		/**
		 * 1、请求参数定义，当前评测使用
		 */
		$scope.inputRiskGrade		= $stateParams.inputRiskGrade;	//【本次买入账户风险等级】
		$scope.evaluateRiskGrade	= "";		//	【评测的风险等级】
		$scope.evaluateScore		= 0 ;		//	评测的总分
		$scope.questionFlag			= true ;	//	是否需要完成所有题目标识位【true-需要，false-不需要】
		$scope.evaluateGradeDesc	= "" ;		//	等级类型描述
		$scope.evaluateGradeContent = "" ;		// 	等级内容描述
		$scope.counts				= 0  ;		//	题目总数
		/**
		 * 风险等级的常量定义
		 * L - 低 ，M - 中，H - 高
		 */
		$scope.RISK_GRADE_LOWER  = "L" ; //	风险等级为：低
		$scope.RISK_GRADE_MIDDLE = "M" ; // 风险等级为：中
		$scope.RISK_GRADE_HIGH   = "H" ; // 风险等级为：高
		
		/**
		 * 切分符合常量定义
		 * 1、必要考虑所在字符串内容中唯一
		 */
		$scope.SPLIT_SYMBOL_RISK   = "&&###&&" ; // 分隔符号
		/** 
		 * 过滤器的公用参数
		 */
		/**var timestamp=myFactory.getTimetamp();
		*var sfis= "itemId-token-timestamp";
		*var signStr="itemId="+$scope.itemId+"&token="+token+"&timestamp="+timestamp;//encodeURI(name)
		*var sign = myFactory.hex(signStr);
		*/
		/**
		 * 返回
		 */
		$scope.goBack = function () {
			myFactory.goBack();
		} 

		/**
		 * 初始化投资风险评测信息
		 * 
		 */
		$scope.load = function () {
			myFactory.loadingShow();//显示加载圈
			/** 
			 * 过滤器的公用参数
			 */
			var timestamp=myFactory.getTimetamp();
			var sfis= "token-timestamp";
			var signStr="token=" + token + "&timestamp=" + timestamp;//encodeURI(name)
			var sign = myFactory.hex(signStr);
			
			var reqData = {
					"chdrcoy":$scope.chdrcoy,
					"chdrnum":$scope.chdrnum01,
					"itemId": $scope.itemId,
					"itemStr":$scope.item
			}
			
			//初始化查询变更项内容
			$http({
				method: 'POST',
				url: app.domain + 'riskevaluate/initRisk.action',
				data:{paramsMap:reqData,'sign':sign,'sfis':sfis,'token':token,'timestamp':timestamp} 
			}).then(function successCallback(response) {
				if (response.data.success) {
					var resultData = response.data.data.modelMap; 
					//	风险题库信息
					$scope.risks = resultData.risks;  
					$scope.counts= resultData.counts;
				}
				myFactory.loadingHide();
			}, function errorCallback(response) {
				myFactory.loadingHide();
				myFactory.alert("","初始化查询风险评测失败!","info");
			});
			 
		}

		/**
		 * 点击答案时的处理
		 * 1、样式修改，变化当前选中项样式，其他项样式还原处理
		 * 2、根据选择的题目答案记录风险内容信息（题目编号、风险值 ... ）
		 * 
		 * @param q_descex02 题目定义【question_1/question_2/question_3 ... 】
		 * @param q_title 题目内容【您的年龄是？ ... 】
		 * @param q_num 题目编号【1/2/3 ... 】
		 * @param a_descex02 答案定义【question_1/question_2/question_3 ... 】
		 * @param a_num 答案编号【1-A-1/1-B-3】
		 * @param a_pedesc 答案内容【39岁及以下 ... 】
		 * @param score 题目得分
		 * 
		 */
		$scope.answer = function (q_descex02,q_title,q_num,a_descex02,a_num,a_pedesc,score) { 
			/**
			 * 1、样式修改，变化当前选中项样式，其他项样式还原处理
			 */
			//	获取当前同一个题目下的所有答案对象信息
			var all = $("#question-div-"+q_num).children("div"); 
			//	修改样式为未选择模式
			all.attr("class","weui-flex__item placeholder");
			//	修改当前选中div样式为选中模式
			$("#answer-div-"+a_num).attr("class","weui-flex__item placeholder-select");
			
			/**
			 * 内容组装
			 * 2、根据选择的题目答案记录风险内容信息（题目编号、风险值 ... ）
			 */
			var context =  q_descex02 + $scope.SPLIT_SYMBOL_RISK ;
				context	+= q_title    + $scope.SPLIT_SYMBOL_RISK ;
				context	+= q_num      + $scope.SPLIT_SYMBOL_RISK ;
				context	+= a_descex02 + $scope.SPLIT_SYMBOL_RISK ;
				context	+= a_num      + $scope.SPLIT_SYMBOL_RISK ;
				context	+= a_pedesc   + $scope.SPLIT_SYMBOL_RISK ;
				context	+= score  ;
			
			$("#question-input-"+q_num).val(context); //	记录当前答案分数值
			
//			myFactory.alert("","初始化 "+all+" 得分： " + score,"info");
		}
		
		/**
		 * 提交评测
		 * 1、计算评测等级结果
		 * 2、等级结果的风险提示及等级交易平台xml存储
		 * 
		 */
		$scope.submitEvaluate = function(){
			myFactory.loadingShow();//显示加载圈  
			/**
			 * 1、计算评测等级结果 
			 */
			$scope.evaluateScore = 0 ; // 等级默认为：0
			var riskContexts = new Array() ;// 内容定义
			
			 // 获取所有文本框
	        var txt = $('#page_risk_div').find(':input');
	        
	        //	遍历所有题目得分并累加
	        for (var i = 0; i < txt.length; i++) {
	        	//	文本值
	        	var iText = txt.eq(i).val() ;
	        	if( iText == "" ){
	        		//	是否需要完成所有题目标识位【true-需要，false-不需要】
	        		if( $scope.questionFlag ){
		        		//	得分为空表示未填写答案信息，提示并退出。
				        myFactory.alert("","请回答所有题目！","info");
				        //	隐藏加载圈
						myFactory.loadingHide();
				        return false;
	        		} 
	        	} else {
	        		//	存储
	        		riskContexts.push(iText);
	        		//	解析成数组
	        		var textArrs  = iText.split($scope.SPLIT_SYMBOL_RISK);
	        		//	数组最后一位是得分
	        		var textScore = textArrs[6];
		        	//	累加总分
	        		$scope.evaluateScore += parseInt(textScore)  ; 
	        	}
	        }
 
	        //	总分小于3，表示用户填写的信息不够，需要回答更多题目
	        if( $scope.evaluateScore <3 ) {
		        myFactory.alert("","请完回答更多的题目！","info");
			    myFactory.loadingHide();//隐藏加载圈 
		        return false;
	        } else { 
	        	/**
	        	 * 2、等级结果的风险提示及等级交易平台xml会话信息存储
	        	 * 
	        	 */  
	        	/** 
	    		 * 过滤器的公用参数
	    		 */
	        	var timestamp=myFactory.getTimetamp();
				var sfis= "token-timestamp";
				var signStr="token=" + token + "&timestamp=" + timestamp;//encodeURI(name)
				var sign = myFactory.hex(signStr);
				var reqData = {
						"evaluateScore":$scope.evaluateScore,
						"chdrcoy":$scope.chdrcoy,
						"chdrnum":$scope.chdrnum01,
						"itemId": $scope.itemId
				}
				$http({
					method: 'POST', 
					url: app.domain + 'riskevaluate/riskGrade.action',
					data:{paramsMap:reqData,paramsObj:riskContexts,'sign':sign,'sfis':sfis,'token':token,'timestamp':timestamp}
				}).then(function successCallback(response) {
					if (response.data.success) {
						var resultData = response.data.data.modelMap; 
						//	风险等级
						$scope.evaluateRiskGrade = resultData.riskGrade;
						$scope.riskXml = resultData.riskXml;
						if( $scope.evaluateRiskGrade != "" ){
							//	根据等级编码获取等级分数定义信息（用于分数比较）
							$scope.initGradeInfo($scope.evaluateRiskGrade);
							
							//	展示评测结果
							modal('open','riskEvaluateModal','riskEvaluateOverWindow','riskEvaluateCloseXOn17Input');
							
							//myFactory.alert("","iEvaluateRiskGrade "+iEvaluateRiskGrade+" iInputRiskGrade "+iInputRiskGrade,"info");
							
						} else {
							myFactory.alert("","等级计算失败！ "+$scope.evaluateRiskGrade,"info");
						}

					}
				    myFactory.loadingHide();//隐藏加载圈 
				}, function errorCallback(response) {
				    myFactory.loadingHide();//隐藏加载圈 
					myFactory.alert("","初始化查询风险评测失败!","info");
				});
	        }
		}
		

		/**
		 * 根据等级编码获取等级分数定义信息（用于分数比较）
		 */
		$scope.convertScore = function (riskGrade) {
			if( $scope.RISK_GRADE_LOWER == riskGrade ){
				return 10 ;
			} else if( $scope.RISK_GRADE_MIDDLE == riskGrade ){
				return 20 ;
			} else if( $scope.RISK_GRADE_HIGH == riskGrade ){
				return 30 ;
			} 
		} 
		
		/**
		 * 重新评测
		 */
		$scope.riskEvaluateCancel = function () {
			//	关闭弹窗
			modal('close','riskEvaluateModal','riskEvaluateOverWindow','riskEvaluateCloseXOn17Input');
			
			//	清理页面填写数据，根据客户需求再做修改
			
		}
		
		/**
		 * 确认是否关闭第二个弹窗
		 * 1、flag=Y 时，关闭“关系表”弹窗，展示“评测弹窗结果”
		 * 2、flag=其他时，相反操作
		 */
		$scope.riskEvaluateConfirm = function (flag){
			
			if( flag == "Y"){
				//	关闭弹窗
				modal('close','riskRelationModal','riskRelationOverWindow','riskRelationCloseXOn17Input');
				//	打开评测弹窗
				modal('open','riskEvaluateModal','riskEvaluateOverWindow','riskEvaluateCloseXOn17Input');
			} else {
				//	打开弹窗
				modal('open','riskRelationModal','riskRelationOverWindow','riskRelationCloseXOn17Input');
				//	关闭评测弹窗
				modal('close','riskEvaluateModal','riskEvaluateOverWindow','riskEvaluateCloseXOn17Input');
			}
		}
		

		/**
		 * 根据等级编码获取等级分数定义信息（用于分数比较）
		 */
		$scope.initGradeInfo = function (riskGrade) {
			if( $scope.RISK_GRADE_LOWER == riskGrade ){
				$scope.evaluateGradeDesc = "保守型";
				$scope.evaluateGradeContent = "您属于保守型的客户，对投资收益的波动很敏感，您非常关注资金的安全性，但也期望投资有平稳的回报。您的投资理念是立足防守，在做选择时应尽量控制风险。";
			} else if( $scope.RISK_GRADE_MIDDLE == riskGrade ){
				$scope.evaluateGradeDesc = "稳健型";
				$scope.evaluateGradeContent = "您属于稳健型的客户，有一定的风险承受能力，期望通过长期且持续的投资获得高于平均水平的回报，您不介意短期内投资收益的巨大波动，您更注重十年甚至更长期限内的平均收益。";
			} else if( $scope.RISK_GRADE_HIGH == riskGrade ){
				$scope.evaluateGradeDesc = "积极型";
				$scope.evaluateGradeContent = "您属于积极型的客户，富有冒险精神，在投资收益波动的情况下，仍然保持积极进取的投资理念。短期内投资收益的下跌被您视为加注投资的利好机会，并坚持长期持有。这大大提高了您能获得较一般投资者更高的投资收益的机会。";
			} 
		} 
		

		/**
		 * 进入审核页面
		 */
		$scope.nextCheck = function () {
 
//		    $ionicHistory.clearCache().then(function(){
		        $state.go('content_check_main',{
		            itemId:$scope.itemId,
		            item:$scope.item,
		            chdrnum01:$scope.chdrnum01,
		            chdrcoy:$scope.chdrcoy
		        });
//		    })
		}
		
		/**
		 * 下一步
		 * 1、本次买入账户风险等级等于或低于本次测评等级，系统允许进入下一步
		 * 2、本次买入账户风险等级高于本次测评等级，系统按《投资账户与客户风险偏好匹配检验表》
		 *    风险等级可匹配的投资账户检测并提示客户：“投资风险偏好类型为XXX，不能选择买入XX、XX账户。”且不允许进入下一步
		 */
		$scope.riskEvaluateNext = function () {
			//	等级转换
			var iEvaluateRiskGrade =$scope.convertScore($scope.evaluateRiskGrade); 	// 	评测的风险等级
			var iInputRiskGrade    =$scope.convertScore($scope.inputRiskGrade);		//	本次买入账户风险等级
			
			if( iInputRiskGrade <= iEvaluateRiskGrade ){
				$scope.nextCheck();
			} else {
				
				var timestamp=myFactory.getTimetamp();
				var sfis= "token-timestamp";
				var signStr="token=" + token + "&timestamp=" + timestamp;//encodeURI(name)
				var sign = myFactory.hex(signStr);
				var reqData = {
						"chdrcoy":$scope.chdrcoy,
						"chdrnum":$scope.chdrnum01,
						"itemId": $scope.itemId,
						"iEvaluateRiskGrade": iEvaluateRiskGrade,
						"itemStr": $scope.item
				}
				
				$http({
					method: 'POST',
					/*url: app.domain + 'riskevaluate/initRisk.action',*/
					url: app.domain + 'riskevaluate/getAccountTypes.action',
					data:{paramsMap:reqData,'sign':sign,'sfis':sfis,'token':token,'timestamp':timestamp} 
				}).then(function successCallback(response) {
					if (response.data.success) {
						var resultData = response.data.data.modelMap; 
						//	风险题库信息
						$scope.accountValues = resultData.accountValues;  
						myFactory.alert("","投资风险偏好类型为"+$scope.evaluateGradeDesc+"，不能选择买入"+$scope.accountValues+"账户。 ","info");
					}
					myFactory.loadingHide();
				}, function errorCallback(response) {
					myFactory.loadingHide();
					myFactory.alert("","初始化查询风险评测失败!","info");
				});
				
				
			}
			
		}
		
			
	}]);
     

})(app);